package cn.blnp.net.flowable.boot.config.flowable.behavior;

import cn.blnp.net.flowable.boot.config.flowable.FlowableEngineConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
import org.flowable.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory;

/**
 * <h3>自定义流程活动行为工厂</h3>
 *
 * @author <a href="mailto:blnp.yibin@qq.com">lyb</a>
 * @version 1.0
 * @since 2025/6/6 15:22
 */
@Slf4j
public class CustomActivityBehaviorFactory extends DefaultActivityBehaviorFactory {

    /**
     *  <h2>注意事项</h2>
     *  <p>
     *      要想自己创建的自定义流程活动行为类在工作流引擎中生效，需要将其注册到流程活动行为工厂中。Flowable默认的流程活动行为工厂是
     *   {@link org.flowable.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory} 重写对应的流程活动创建行为
     *   类的方法即可。
     *  </p>
     *  <p>
     *      另外如果想让咱们自定义的流程活动工厂生效，需要将自定义的流程活动行为工厂注册到流程引擎配置中。详见：
     *   {@link FlowableEngineConfiguration#processEngineConfiguration()}
     *  </p>
     **/

    @Override
    public UserTaskActivityBehavior createUserTaskActivityBehavior(UserTask userTask) {
        return new CustomUserTaskActivityBehavior(userTask);
    }
}
